package a.f.d;

import a.c.ab;
import a.c.d;
import a.c.e;
import a.c.k;
import a.c.m;
import a.c.v;
import a.c.z;
import a.f.cd;
import a.f.ed;
import a.f.zb;
import a.i.l;

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;

class o
{
  private a.f.o a;
  private ab c;
  private Map d;
  private x e;
  private double f = 20.0D;
  private Comparator g = new a_();
  private static final double[] h = { 0.0D, 1.0D, 0.0D, -1.0D };
  private static final double[] i = { -1.0D, 0.0D, 1.0D, 0.0D };
  private double j;
  
  public o(a.f.o paramo, x paramx)
  {
    this.e = paramx;
    this.a = paramo;
    this.c = new ab();
    this.d = new HashMap();
    do
    {
      m localm = paramo.w();
      while (k == 0)
      {
        if (!localm.e()) {
          break;
        }
        if (m == 0)
        {
          if (localm.a().g()) {
            this.c.c(localm.a());
          }
          localm.f();
        }
      }
    } while (m != 0);
  }
  
  public void a(double paramDouble)
  {
    this.f = paramDouble;
  }
  
  public boolean a()
  {
    if (f.o == 0) {}
    return this.c.size() > 0;
  }
  
  public void b()
  {
    int m = f.o;
    int k = f.n;
    do
    {
      for (v localv = this.c.f(); k == 0; localv = localv.a())
      {
        if (localv == null) {
          break;
        }
        this.a.f((d)localv.c());
      }
    } while (m != 0);
  }
  
  public void c()
  {
    int m = f.o;
    int k = f.n;
    do
    {
      for (v localv = this.c.f(); k == 0; localv = localv.a())
      {
        if (localv == null) {
          break;
        }
        this.a.g((d)localv.c());
        this.a.e(localv.c()).b();
      }
    } while (m != 0);
  }
  
  public void d()
  {
    this.a = null;
    this.c = null;
    this.d = null;
    this.e = null;
  }
  
  public x.d_ a(e parame)
  {
    x.d_ locald_ = (x.d_)this.d.get(parame);
    if (f.o == 0) {
      if (locald_ == null)
      {
        locald_ = new x.d_(this.a.d(parame));
        this.d.put(parame, locald_);
      }
    }
    return locald_;
  }
  
  public boolean c(e parame)
  {
    return this.d.containsKey(parame);
  }
  
  public void e()
  {
    int i4 = f.o;
    int i3 = f.n;
    v localv = this.c.f();
    label268:
    label374:
    do
    {
      if (localv == null) {
        break;
      }
      d locald = (d)localv.c();
      x.d_ locald_ = a(locald.e());
      locald_.b.add(locald);
      cd localcd1 = a(locald);
      cd localcd2 = b(locald);
      if (i4 == 0) {}
      int k = !localcd1.a() ? 1 : 0;
      if (i4 == 0) {}
      int m = !localcd2.a() ? 1 : 0;
      int n = x.a(localcd1.b(), 2);
      int i1 = x.a(localcd2.b(), 0);
      int i2 = 4 + i1 - n & 0x3;
      if (i4 == 0) {
        if (k == 0)
        {
          if (i4 != 0) {
            continue;
          }
          if (m == 0) {
            break label374;
          }
        }
      }
      if (i4 == 0) {
        if (k != 0)
        {
          if (i4 != 0) {
            break label268;
          }
          switch (i2)
          {
          case 0: 
            locald_.c(n).l.add(locald);
            if (i4 == 0) {
              if (i3 == 0) {
                break;
              }
            }
            break;
          case 3: 
            locald_.a(n).l.add(locald);
            if (i4 == 0) {
              if (i3 == 0) {
                break;
              }
            }
            break;
          case 1: 
          case 2: 
            locald_.b(n).l.add(locald);
          }
        }
      }
      if (i4 == 0)
      {
        if (m != 0)
        {
          if (i4 != 0) {
            continue;
          }
          switch (i2)
          {
          case 0: 
            locald_.c(i1).l.add(locald);
            if (i4 != 0) {
              continue;
            }
            if (i3 == 0) {
              break;
            }
          case 1: 
          case 2: 
            locald_.a(i1).l.add(locald);
            if (i4 != 0) {
              continue;
            }
            if (i3 == 0) {
              break;
            }
          case 3: 
            locald_.b(i1).l.add(locald);
          }
        }
        locald_.b.a(this.g);
        localv = localv.a();
      }
    } while (i3 == 0);
  }
  
  public void e(e parame)
  {
    int i2 = f.o;
    int i1 = f.n;
    x.d_ locald_ = a(parame);
    v localv = locald_.b.f();
    do
    {
      if (localv == null) {
        break;
      }
      d locald = (d)localv.c();
      cd localcd1 = a(locald);
      cd localcd2 = b(locald);
      int k = x.a(localcd1.b(), 2);
      int m = x.a(localcd2.b(), 0);
      int n = 4 + m - k & 0x3;
      if (i2 == 0)
      {
        switch (n)
        {
        case 0: 
          locald_.c(k).b();
          if (i2 != 0) {
            continue;
          }
          if (i1 == 0) {
            break;
          }
        case 1: 
          locald_.b(k).b();
          locald_.a(m).b();
          if (i2 != 0) {
            continue;
          }
          if (i1 == 0) {
            break;
          }
        case 2: 
          locald_.b(k).b();
          locald_.h(k + 1 & 0x3);
          locald_.a(m).b();
          if (i2 != 0) {
            continue;
          }
          if (i1 == 0) {
            break;
          }
        case 3: 
          locald_.a(k).b();
          locald_.b(m).b();
        }
        localv = localv.a();
      }
    } while (i1 == 0);
  }
  
  public void g()
  {
    int i3 = f.o;
    int i2 = f.n;
    a.c.w localw = this.a.v();
    label375:
    label380:
    do
    {
      do
      {
        if (!localw.e()) {
          return;
        }
        e locale = localw.d();
        if (i3 != 0) {
          break;
        }
        if (c(locale))
        {
          x.d_ locald_ = a(locale);
          locald_.a(this.a.d(locale));
          locald_.a();
          z localz = new z();
          v localv1 = locald_.b.f();
          do
          {
            if (localv1 == null) {
              break label1431;
            }
            d locald = (d)localv1.c();
            localz.clear();
            cd localcd1 = a(locald);
            cd localcd2 = b(locald);
            int k = x.a(localcd1.b(), 2);
            int m = x.a(localcd2.b(), 0);
            a.d.w localw1 = null;
            a.d.w localw2 = null;
            a.d.w localw3 = null;
            a.d.w localw4 = null;
            int n = 4 + m - k & 0x3;
            if (i2 != 0) {
              break;
            }
            x.e_ locale_1;
            if (!localcd1.a())
            {
              switch (n)
              {
              case 1: 
              case 2: 
                locale_1 = locald_.b(k);
                localw1 = locale_1.c(locale_1.a(), 0.0D);
                break;
              case 0: 
                locale_1 = locald_.c(k);
                localw1 = locale_1.c(locale_1.a(), 0.0D);
                break;
              case 3: 
                locale_1 = locald_.a(k);
                localw1 = locale_1.c(locale_1.a(), 0.0D);
              }
              this.a.c(locald, localw1);
            }
            else
            {
              localw1 = this.a.r(locald);
              if (i3 == 0)
              {
                if ((k & 0x1) == 1) {
                  localw1 = new a.d.w(locald_.c(k).d, localw1.b);
                }
              }
              else
              {
                if (i3 != 0) {
                  break label380;
                }
                if (i2 == 0) {
                  break label375;
                }
              }
              localw1 = new a.d.w(localw1.a, locald_.c(k).c);
            }
            if ((i3 != 0) || (!localcd2.a()))
            {
              switch (n)
              {
              case 0: 
                locale_1 = locald_.c(m);
                localw2 = locale_1.c(locale_1.a(), 0.0D);
                break;
              case 1: 
              case 2: 
                locale_1 = locald_.a(m);
                localw2 = locale_1.c(locale_1.a(), 0.0D);
                break;
              case 3: 
                locale_1 = locald_.b(m);
                localw2 = locale_1.c(locale_1.a(), 0.0D);
              }
              this.a.d(locald, localw2);
            }
            else
            {
              localw2 = this.a.s(locald);
              if (i3 == 0)
              {
                if ((m & 0x1) == 1) {
                  localw2 = new a.d.w(locald_.c(m).d, localw2.b);
                }
              }
              else
              {
                if (i3 != 0) {
                  break label585;
                }
                if (i2 == 0) {
                  break label583;
                }
              }
              localw2 = new a.d.w(localw2.a, locald_.c(m).c);
            }
            double d1;
            switch (n)
            {
            case 0: 
              locale_1 = locald_.c(k);
              d1 = locale_1.b();
              locale_1.e(d1);
              localw3 = new a.d.w(localw1.a + h[k] * d1, localw1.b + i[k] * d1);
              localw4 = new a.d.w(localw2.a + h[m] * d1, localw2.b + i[m] * d1);
              break;
            case 1: 
              locale_1 = locald_.b(k);
              d1 = locale_1.b();
              localw3 = new a.d.w(localw1.a + h[k] * d1, localw1.b + i[k] * d1);
              locale_1 = locald_.a(m);
              d1 = locale_1.b();
              localw4 = new a.d.w(localw2.a + h[m] * d1, localw2.b + i[m] * d1);
              if (i3 == 0) {
                if ((k & 0x1) == 0)
                {
                  localz.add(new a.d.w(localw4.a, localw3.b));
                  if (i3 != 0) {
                    break label1342;
                  }
                  if (i2 == 0) {
                    break;
                  }
                }
              }
              localz.add(new a.d.w(localw3.a, localw4.b));
              break;
            case 2: 
              int i1 = k + 1 & 0x3;
              x.e_ locale_2 = locald_.b(k);
              double d3 = locale_2.b();
              localw3 = new a.d.w(localw1.a + h[k] * d3, localw1.b + i[k] * d3);
              locale_2 = locald_.a(m);
              d3 = locale_2.b();
              localw4 = new a.d.w(localw2.a + h[m] * d3, localw2.b + i[m] * d3);
              x.e_ locale_3 = locald_.a(i1);
              double d4 = locald_.h(i1);
              double d5;
              if ((i1 & 0x1) == 0)
              {
                d5 = locale_3.f(0.0D, d4);
                localz.add(new a.d.w(localw3.a, d5));
                localz.add(new a.d.w(localw4.a, d5));
                if (i3 != 0) {
                  break label1342;
                }
                if (i2 == 0) {
                  break;
                }
              }
              else
              {
                d5 = locale_3.g(0.0D, d4);
                localz.add(new a.d.w(d5, localw3.b));
                localz.add(new a.d.w(d5, localw4.b));
              }
              break;
            case 3: 
              localObject = locald_.a(k);
              double d2 = ((x.e_)localObject).b();
              localw3 = new a.d.w(localw1.a + h[k] * d2, localw1.b + i[k] * d2);
              localObject = locald_.b(m);
              d2 = ((x.e_)localObject).b();
              localw4 = new a.d.w(localw2.a + h[m] * d2, localw2.b + i[m] * d2);
              if (i3 == 0) {
                if ((k & 0x1) == 0)
                {
                  localz.add(new a.d.w(localw4.a, localw3.b));
                  if (i3 != 0) {
                    break label1342;
                  }
                  if (i2 == 0) {
                    break;
                  }
                }
              }
              localz.add(new a.d.w(localw3.a, localw4.b));
            }
            localz.a(localw3);
            localz.b(localw4);
            Object localObject = this.a.e(locald);
            v localv2 = localz.f();
            do
            {
              do
              {
                if (localv2 == null) {
                  break;
                }
                a.d.w localw5 = (a.d.w)localv2.c();
                ((zb)localObject).a(localw5.a, localw5.b);
                localv2 = localv2.a();
                if (i3 != 0) {
                  break label1428;
                }
                if (i2 != 0) {
                  break label1426;
                }
              } while (i2 == 0);
            } while (i3 != 0);
            localv1 = localv1.a();
          } while (i2 == 0);
        }
        localw.f();
      } while (i3 != 0);
    } while (i2 == 0);
    label583:
    label585:
    return;
  }
  
  cd a(d paramd)
  {
    int k = f.o;
    k localk1 = this.a.c(ed.a);
    cd localcd1 = null;
    if ((k != 0) || (localk1 != null)) {
      localcd1 = (cd)localk1.get(paramd);
    }
    if ((k != 0) || (localcd1 != null))
    {
      if (k != 0) {
        break label201;
      }
      if (!localcd1.g()) {}
    }
    else
    {
      k localk2 = this.a.c(ed.b);
      if (k == 0) {
        if (localk2 == null) {
          return cd.a((byte)1);
        }
      }
      cd localcd2 = (cd)localk2.get(paramd);
      if (k == 0) {
        if (localcd2 != null)
        {
          if (k != 0) {
            break label132;
          }
          if (!localcd2.g()) {
            break label127;
          }
        }
      }
      return cd.a((byte)1);
      label127:
      if (k == 0) {
        if (localcd2.c()) {
          return cd.a((byte)8);
        }
      }
      label132:
      if (k == 0) {
        if (localcd2.f()) {
          return cd.a((byte)1);
        }
      }
      if (k == 0)
      {
        if (localcd2.d()) {
          return cd.a((byte)4);
        }
        if (k != 0) {
          break label201;
        }
      }
      if (localcd2.e()) {
        return cd.a((byte)2);
      }
    }
    label201:
    return localcd1;
  }
  
  cd b(d paramd)
  {
    int k = f.o;
    k localk1 = this.a.c(ed.b);
    cd localcd1 = null;
    if ((k != 0) || (localk1 != null)) {
      localcd1 = (cd)localk1.get(paramd);
    }
    if ((k != 0) || (localcd1 != null))
    {
      if (k != 0) {
        break label203;
      }
      if (!localcd1.g()) {}
    }
    else
    {
      k localk2 = this.a.c(ed.a);
      if (k == 0) {
        if (localk2 == null) {
          return cd.a((byte)8);
        }
      }
      cd localcd2 = (cd)localk2.get(paramd);
      if (k == 0) {
        if (localcd2 != null)
        {
          if (k != 0) {
            break label134;
          }
          if (!localcd2.g()) {
            break label129;
          }
        }
      }
      return cd.a((byte)8);
      label129:
      label134:
      if (k == 0) {
        if (localcd2.c()) {
          return cd.a((byte)8);
        }
      }
      if (k == 0) {
        if (localcd2.f()) {
          return cd.a((byte)1);
        }
      }
      if (k == 0)
      {
        if (localcd2.d()) {
          return cd.a((byte)4);
        }
        if (k != 0) {
          break label203;
        }
      }
      if (localcd2.e()) {
        return cd.a((byte)2);
      }
    }
    label203:
    return localcd1;
  }
  
  public void c(double paramDouble)
  {
    this.j = paramDouble;
  }
  
  final class a_
    implements Comparator
  {
    int[] a = { 0, 0, 1, 0 };
    
    a_() {}
    
    public int compare(Object paramObject1, Object paramObject2)
    {
      int i2 = f.o;
      cd localcd1 = o.this.a((d)paramObject1);
      cd localcd2 = o.this.a((d)paramObject2);
      cd localcd3 = o.this.b((d)paramObject1);
      cd localcd4 = o.this.b((d)paramObject2);
      int i = x.a(localcd1.b(), 2);
      int j = x.a(localcd2.b(), 2);
      int k = x.a(localcd3.b(), 0);
      int m = x.a(localcd4.b(), 0);
      int n = 4 + k - i & 0x3;
      int i1 = 4 + m - j & 0x3;
      if (i2 == 0)
      {
        if (n == 2)
        {
          if (i2 != 0) {
            break label183;
          }
          if (i1 == 2) {
            return l.a(Math.min(j, m), Math.min(i, k));
          }
        }
        n = this.a[n];
        i1 = this.a[i1];
      }
      label183:
      if (i2 == 0) {
        if (n == i1) {
          return l.a(i, j);
        }
      }
      return l.a(n, i1);
    }
  }
}



/* Location:           E:\idea\

 * Qualified Name:     a.f.d.o

 * JD-Core Version:    0.7.0.1

 */